package tt.dz.egobus.servicemanager.facade.interator;

import tt.dz.egobus.servicemanager.core.exception.BusinessException;

import java.lang.reflect.Method;

/**
 * @author Anson
 * @date 17-3-20
 * @name cglib拦截器
 * @since 1.0.1
 */
public interface Interceptor {


    /**
     * @param obj    当前对象
     * @param method 当前调用方法
     * @param args   参数
     * @throws BusinessException 可能业务上直接抛出异常处理
     * @author Anson
     * @date 17-3-19
     * @name 日志拦截前处理
     * @since 1.0.1
     */
    boolean interceptBefore(Object obj, Method method, Object[] args) throws BusinessException;

    /**
     * @param obj    当前对象
     * @param method 当前调用方法
     * @param args   参数
     * @param result 结果，可能是空
     * @throws BusinessException 可能业务上直接抛出异常处理
     * @author Anson
     * @date 17-3-19
     * @name
     * @since 1.0.1
     */
    Object interceptPost(Object obj, Method method, Object[] args, Object result) throws BusinessException;
}
